package it.gius.pe.algorithm.gjk;

import it.gius.pe.Shape.witness.Witness;

import org.jbox2d.common.Vec2;


public interface IGjkAlgorithmShape extends IGjkGeneralShape{

	public Simplex getStartingSimplex();

	/**
	 * get a new simplex to elaborate as the next cycle  of gjk algorithm.
	 * Remove vertices not used in the solution and add the supportPoint in the simplex (if not already present).
	 * @param simpSol solution of the last simplex request
	 * @param d direction where to search support point
	 * @return the update simplex or null if the supportPoint is already inside the simplex (stopping condition)
	 */
	public Simplex updateSimplex(SimplexSolution simpSol,Vec2 newSupportPoint,Witness lastWitness);

	public void fillSolution(Vec2 pointSol,Vec2 q,SimplexSolution simpSol, DistanceSolution sol);

}
